package com.fangzhen.util;

import com.fangzhen.common.BaseResponse;
import com.fangzhen.common.OperateEnum;
import com.fangzhen.util.constant.ResponseConstant;

/**
 * 全局返回值工具类
 *
 * @author : z_sz
 * @date : 2020-09-09
 **/
public class BaseResponseUtil {
    /**
     * 构造器私有化
     */
    private BaseResponseUtil() {
    }

    /**
     * 设置成功标识
     *
     * @return 响应实体
     */
    public static BaseResponse success() {
        return new BaseResponse().setCode(ResponseConstant.SUNCCESS_CODE);
    }

    /**
     * 设置失败标识
     *
     * @return 响应实体
     */
    public static BaseResponse fail() {
        return new BaseResponse().setCode(ResponseConstant.FAIL_CODE);
    }

    /**
     * 成功响应，不包含响应数据体
     *
     * @param operateEnum 响应消息
     * @return 响应实体
     */
    public static BaseResponse success(OperateEnum operateEnum) {
        return success().setMessage(operateEnum.getMessage());
    }

    /**
     * 成功响应，包含响应数据体
     *
     * @param operateEnum 响应消息
     * @param data        响应数据体
     * @param <T>         消息体数据类型
     * @return 响应实体
     */
    public static <T> BaseResponse success(OperateEnum operateEnum, T data) {
        return success(operateEnum).setData(data);
    }

    /**
     * 异常返回（系统异常、数据校验异常、业务异常）
     *
     * @param message 异常消息
     * @return 响应实体
     */
    public static BaseResponse fail(String message) {
        return fail().setMessage(message);
    }
}
